<?php
/**
 * @copyright   Copyright(c) 2018
 * @author      tianjie
 * @link        http://www.tinphp.com/
 */

namespace tian;

class Cache
{
    //缓存扩展名
    const EXT = '.tpl';

    /**
     * @desc 设置文件缓存
     * @param string $key 文件名
     * @param string|array $data 缓存数据
     */
    public static function set($key, $data)
    {
        $filename = CACHE_PATH . '/' . $key . self::EXT;
        if (file_exists($filename)) {
            $res = self::get($key);
            if (md5($res) == md5($data)) {
                return true;
            }
        }
        if (!is_dir(dirname($filename))) {
            mkdir(dirname($filename), 0777);
        }

        $source = fopen($filename, 'w+');
        fwrite($source, json_encode($data, JSON_UNESCAPED_UNICODE));
        fclose($source);
    }

    /**
     * @desc 获取文件
     * @param string $key 文件名
     */
    public static function get($key)
    {
        $filename = CACHE_PATH . '/' . $key . self::EXT;
        if (!file_exists($filename)) {
            return '缓存文件已经不存在';
        } else {
            $res = file_get_contents($filename, true);
        }
        return json_decode($res, true);
    }

    /**
     * @desc 删除文件
     * @param string $key 文件名
     */
    public static function del(string $key)
    {
        $filename = CACHE_PATH . '/' . $key . self::EXT;
        unlink($filename);
    }

    /**
     * @desc 验证缓存是否存在
     * @param string $key 文件名
     * @return boolean
     */
    public static function has(string $key): bool
    {
        $filename = CACHE_PATH . '/' . $key . self::EXT;
        if (file_exists($filename)) {
            return true;
        }
        return false;
    }

}

